# 想要实现类方法，可以使用 @classmethod 装饰器来实现

class C:

    def funA(self):
        print(self)

    @classmethod
    def funB(cls):
        print(cls)


c = C()
c.funA()
# <__main__.C object at 0x105916850>
c.funB()
# <class '__main__.C'>

print("================================================================================" * 3)


# 类方法的用例
class Counter:
    count = 0

    def __init__(self):
        Counter.count += 1

    @classmethod
    def get_count(cls):
        print(F"Counter类一共实例化了{cls.count}个对象。")


c1 = Counter()
c2 = Counter()
c3 = Counter()
c1.get_count()
c2.get_count()
c3.get_count()
# Counter类一共实例化了3个对象。
# Counter类一共实例化了3个对象。
# Counter类一共实例化了3个对象。

print("================================================================================" * 3)

# 如果在对象中去创建一个跟类属性同名的实例属性，那么后者就会覆盖类属性

c3.count = 1
print(c3.count)
c3.get_count()
# Counter类一共实例化了3个对象。
